const multer = require('@koa/multer');
const path = require('path')
const OSS = require('ali-oss');

require('dotenv').config(); // 加载 .env 文件到 process.env

const {OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET} = process.env

let client = new OSS({
    // 从环境变量中获取访问凭证。运行本代码示例之前，请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    accessKeyId: OSS_ACCESS_KEY_ID,
    accessKeySecret: OSS_ACCESS_KEY_SECRET,
    // yourRegion填写Bucket所在地域。以华东1（杭州）为例，Region填写为oss-cn-hangzhou。
    region: 'oss-cn-hangzhou',
    // authorizationV4: true,
    // yourBucketName填写Bucket名称。
    bucket: 'ykzuishuai',
});


//前端上传文件后后端的文件夹路径
const storage = multer.diskStorage({
    //控制传入文件路径
    destination: function (req, file, cb) {
        cb(null, path.join(__dirname, '..', '/public/uploads'))
    },
    //控制传入图片姓名
    filename: function (req, file, cb) {
        const uniqueSuffix = Date.now().toString().slice(0, 5) + Math.round(Math.random() * 1E9)
        cb(null, uniqueSuffix + '.' + file.originalname.split('.')[1])
    }
})

const upload = multer({storage})

// 'object'填写上传至OSS的object名称,即不包括Bucket名称在内的Object的完整路径。
// 'localfile'填写上传至OSS的本地文件完整路径。
const upLoadImg = (img, imgPath) => {
    console.log(img, imgPath)
    return new Promise((resolve, reject) => {
        client.put('bike/' + img, imgPath).then(res => {
            if (res.res.status === 200) {
                resolve({name: img, url: res.url})
            }
        }).catch(err => {
            console.log(err);
            reject(err)
        })
    })
}

module.exports = {
    upload, upLoadImg
}
